package jmir.adrian.empresa;

public class EmpresaTest {

	private static final int SOU_BASE = 1;
	private static final int SOU_COMISSIO = 2;
	private static final int SOU_BASE_COMISSIO = 3;
	private static final int SOU_HORES = 4;
	private static final int PREU_VENDA = 300;	//preu establert per venda
	private static final int COMISSIO = 15;	//percentatge establert de comissió per venda
	
	/**Mètode main**/
	public static void main(String[] args) {
		
		Lectura lectura = new Lectura();
		
		Empleat[] empleats = inEmpleat(lectura);
		
		outEmpleats(empleats);
		sumaSous(empleats);
	}
	
	/**agafa per teclat les dades de els empleats depenent del tipus que sigui**/
	public static Empleat[] inEmpleat(Lectura lectura){
		
		String nom, cognom, DNI;
		int vendes, hores;
		double sou, preuHora;
	
		Empleat[] empleats = new Empleat[lectura.readInt("Número d'empleats: ")];
		
		for (int i = 0; i < empleats.length; i++){
			//informacio compartida
			nom = lectura.readString("Nom empleat "+(i+1)+":");
			cognom = lectura.readString("Cognom empleat "+(i+1)+":");
			DNI = lectura.readString("DNI empleat "+(i+1)+":");
			
			switch (lectura.readInt("Quin tipus de sou té?\n["+SOU_BASE+"] Sou base\n["+SOU_COMISSIO+"] "
								+ "Sou per comissió\n["+SOU_BASE_COMISSIO+"] Sou base + comissio\n"
								+ "["+SOU_HORES+"] Sou per hores")){
			
			//informacio depenent del tipus d'empleat
			case SOU_BASE:  sou = lectura.readDouble("Sou base: ");
							EmpleatSouBase souBase = new EmpleatSouBase(nom, cognom, DNI, sou);
							empleats[i] = souBase;
							break;
			case SOU_COMISSIO: vendes = lectura.readInt("Quantes vendes ha fet aquest mes?");
							EmpleatComissio souComissio = new EmpleatComissio(nom, cognom, DNI, vendes, COMISSIO, PREU_VENDA);
							empleats[i] = souComissio;
							break;
			case SOU_BASE_COMISSIO: sou = lectura.readDouble("Sou base: ");
							vendes = lectura.readInt("Quantes vendes ha fet aquest mes?");
							EmpleatSouBaseComissio baseComissio = new EmpleatSouBaseComissio (nom, cognom, DNI, 
																	sou, vendes, COMISSIO, PREU_VENDA);
							empleats[i] = baseComissio;
							break;	
			case SOU_HORES: preuHora = lectura.readDouble("A quant cobra l'hora?");
							hores = lectura.readInt("Quantes hores ha fet?");
							EmpleatHores souHores = new EmpleatHores(nom, cognom, DNI, hores, preuHora);
							empleats[i] = souHores;
							break;
			}
		}
		return empleats;
	}
	
	/**imprimeix totes les dades de tos el empleats independentment del tipus**/
	public static void outEmpleats(Empleat[] empleats){
		
		for(int i = 0; i < empleats.length; i++)
			System.out.println("EMPLEAT "+(i+1)+"\n"+empleats[i].toString()+"\n");	
	}
	
	
	/**Calcula el total de sous independentment del tipus d'empleat**/
	public static void sumaSous(Empleat[] empleats){
		
		double sous = 0.0;
		
		for(int i = 0; i < empleats.length; i++)
			sous = sous + empleats[i].calculaSouTotal();	//suma tots els sous que es retornen
		
		System.out.println("Total a pagar en sous: "+sous);

	}
}
	
